home *** CD-ROM | disk | FTP | other *** search
- ;;; -*- Mode: Lisp; Package: Maxima; Syntax: Common-Lisp; Base: 10 -*- ;;;;
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;;; The data in this file contains enhancments. ;;;;;
- ;;; ;;;;;
- ;;; Copyright (c) 1984,1987 by William Schelter,University of Texas ;;;;;
- ;;; All rights reserved ;;;;;
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-
- (in-package "MAXIMA")
-
- (import '(compiler::inline-unsafe compiler::inline-always compiler::boolean
- compiler::definline ) 'cl-maxima)
-
- (macsyma-module rat3f)
-
-
- (defmacro definline
- (property return-type side-effect-p new-object-p name arg-types
- body)
- `(progn
- (si::remprop ',name 'compiler::fixed-args)
- (push
- '(,arg-types ,return-type ,(logior (if new-object-p 1 0) (if side-effect-p 2 0))
- ,body)
- (get ',name ',property))))
-
- (defun proclaim-property (arg)
- (let ((prop (car arg)))
- (sloop for v in (cdr arg)
- do (assert (symbolp v))
- (setf (get v prop) t))))
-
-
-
- (progn
- (definline inline-always t nil nil ctimes (t t) "ctimes(#0,#1)")
- (definline inline-always t nil nil cplus (t t) "cplus(#0,#1)")
- (definline inline-always t nil nil cdifference (t t) "cdifference(#0,#1)")
- (definline inline-always t nil nil cmod (t ) "cmod(#0)")
- )
-
- (definline inline-unsafe fixnum nil nil quot (fixnum fixnum)
- "((#0)/(#1))")
-
- (definline inline-unsafe fixnum nil nil rem (fixnum fixnum)
- "((#0)%(#1))")
-
- (definline inline-always boolean nil nil bigp (t)
- "(type_of(#0)==t_bignum)")
-
-
- (definline inline-always boolean nil nil pointergp (t t)
- "((fix((#0)->s.s_dbind)) > fix(((#1)->s.s_dbind)))")
-
-
- ;(and (not (consp x)) (if (si::fixnump x) (= 0 (the fixnum x)) (zerop x)))
- (definline inline-always boolean nil nil pzerop (t )
- "@0;(type_of(#0)==t_fixnum ? (fix(#0)==0)
- :type_of(#0) == t_cons ? 0
- :type_of(#0)==t_shortfloat ? (sf(#0)==0.0)
- :(type_of(#0)==t_longfloat && (lf(#0)==0.0)))")
-
- ;(definline inline-always boolean nil nil pzerop (t )
- ; "(type_of(#0)==t_fixnum ? (fix(#0)==0)
- ; :type_of(#0)==t_shortfloat ? (sf(#0)==0.0)
- ; :(type_of(#0)==t_longfloat && (lf(#0)==0.0)))")
-
-
-
-
-
-
-
-
-